package com.leetcode.first50;

/**
 * Created by weishaofei on 2018/11/24.
 */
public class Leetcode0005 {

    /**
     * 错写成最大首尾重合的子序列
     *
     * @param s
     * @return
     */
    public String maxSubString(String s) {
        if (s.length() <= 1) {
            return s;
        }
        char[] chars = s.toCharArray();
        String st = "";
        String temp = "";
        String result = "";
        for (char ch : chars) {
            if (st.contains(String.valueOf(ch))) {
                temp = st.substring(st.indexOf(String.valueOf(ch))) + ch;
                if (temp.length() > result.length()) {
                    result = temp;
                }
            }
            st += ch;

        }
        if (result.length() == 0) {
            return s.substring(0, 1);
        }
        return result;
    }

    public static void main(String[] args) {
        Leetcode0005 l5 = new Leetcode0005();
        System.out.println(l5.longestPalindrome("b"));
        System.out.println(l5.longestPalindrome("bbccddd"));
        System.out.println(l5.longestPalindrome("abcda"));
        System.out.println(l5.longestPalindrome("ccc"));
        System.out.println(l5.longestPalindrome("cbbd"));
        System.out.println(l5.longestPalindrome("babad"));
        System.out.println(l5.longestPalindrome("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"));
    }

    public String longestPalindrome(String s) {
        char[] chars = s.toCharArray();
        int length = chars.length;
        if (length == 0 || s.replace(String.valueOf(chars[0]), "").length() == 0) {
            return s;
        }
        String result = "";
        String temp = "";
        for (int a = 0; a < length; a++) {
            boolean aba = false;//是否为
            temp += chars[a];
            int m = a - 1;
            int n = a + 1;
            while (m > -1) {
                if (n < length && chars[m] == chars[n]) {//aba 回文
                    temp = chars[m] + temp + chars[n];
                    m = m - 1;
                    n = n + 1;
                    aba = true;
                    continue;
                }
                if (!aba && chars[m] == chars[a]) {//aabb回文
                    temp += chars[a];
                    m = m - 1;
                    continue;
                }
                break;
            }
            if (temp.length() >= result.length()) {
                result = temp;
            }
            if (result.length() == length) {
                return result;
            }
            temp = "";
        }
        return result;
    }
}
